package com.ranyk.www.enums;

import lombok.Getter;

/**
 * CLASS_NAME: StatusEnum.java <br/>
 *
 * @author ranyk           <br/>
 * @version V1.0           <br/>
 * @decription: 状态枚举常量  <br/>
 * @date: 2022-04-01 <br/>
 */
@Getter
public enum StatusEnum {

    /**
     * 正常
     */
    NORMAL(1, "正常"),
    /**
     * 冻结
     */
    FREEZE(0, "冻结"),
    /**
     * 激活
     */
    ACTIVATED(1, "激活"),
    /**
     * 未激活
     */
    UNACTIVATED(0, "未激活"),
    /**
     * 显示
     */
    SHOW(1, "显示"),
    /**
     * 隐藏
     */
    HIDDEN(0, "隐藏"),
    /**
     * 有效
     */
    VALID(1, "有效"),
    /**
     * 无效
     */
    INVALID(0, "无效"),
    /**
     * 选中
     */
    CHECKED(1, "选中"),
    /**
     * 未选中
     */
    UNCHECKED(0, "未选中"),
    /**
     * 默认
     */
    DEFAULT(1, "默认 "),
    /**
     * 下架
     */
    UN_DEFAULT(0, "不默认"),
    /**
     * 上架
     */
    SHELVE(1, "上架"),
    /**
     * 下架
     */
    OFF_SHELVE(0, "下架"),
    /**
     * 全部
     */
    ALL(null, "全部");

    /**
     * 状态值
     */
    private final Integer status;
    /**
     * 状态信息
     */
    private final String stateInfo;

    /**
     * 全参构造函数
     *
     * @param status    状态值
     * @param stateInfo 状态信息
     */
    StatusEnum(Integer status, String stateInfo) {
        this.status = status;
        this.stateInfo = stateInfo;
    }

    /**
     * 根据状态值获取状态枚举对象
     *
     * @param index 状态值
     * @return 反正状态枚举对象,默认 StatusEnum.NORMAL
     */
    @SuppressWarnings("unused")
    public static StatusEnum stateOf(int index) {
        for (StatusEnum statusEnum : values()) {
            if (statusEnum.getStatus() == index) {
                return statusEnum;
            }
        }
        return NORMAL;
    }
}
